package com.cr.business.mapper;

import com.cr.business.domain.TbUserEntityInfo;
import com.cr.business.domain.dto.EntityReqDto;
import com.cr.business.domain.vo.ChartCountVo;
import com.cr.business.domain.vo.EntityExportData;
import com.cr.business.domain.vo.EntityListData;

import java.util.List;

/**
 * 用户主体信息Mapper接口
 * 
 * @author tang
 * @date 2025-08-19
 */
public interface TbUserEntityInfoMapper
{

    /**
     * 根据ID查询主体信息
     */
    TbUserEntityInfo selectTbUserEntityInfoById(String entityId);

    /**
     * 根据用户ID查询主体信息
     * @param userId 用户ID
     */
    TbUserEntityInfo selectTbUserEntityInfoByUserId(String userId);

    /**
     * 新增用户主体信息
     *
     * @param tbUserEntityInfo 用户主体信息
     * @return 结果
     */
    int insertTbUserEntityInfo(TbUserEntityInfo tbUserEntityInfo);

    /**
     * 修改用户主体信息
     * 
     * @param tbUserEntityInfo 用户主体信息
     * @return 结果
     */
    int updateTbUserEntityInfo(TbUserEntityInfo tbUserEntityInfo);

    /**
     * 查询主体信息列表
     * @param params 查询参数
     */
    List<EntityListData> selectTbUserEntityInfoList(EntityReqDto params);
    List<EntityExportData> selectTbUserEntityInfoExportList(EntityReqDto params);

    /**
     * 批量删除主体信息
     * @param entityIds 需要删除的主体信息ID
     */
    int deleteTbUserEntityInfoByEntityIds(String[] entityIds);

    /**
     * 查询主体信息总数
     */
    int selectAllCount();

    /**
     * 主体属性统计
     */
    List<ChartCountVo> selectAttrCount();
}
